﻿// Decompiled with JetBrains decompiler
// Type: UnityEngine.Device.SystemInfo
// Assembly: UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
// MVID: E6AE6B5A-2752-4B07-9528-C8B77C62CE79
// Assembly location: C:\Users\windys\Unity\2021.3.39f1c1\Editor\Data\Managed\UnityEngine\UnityEngine.CoreModule.dll
// XML documentation location: C:\Users\windys\Unity\2021.3.39f1c1\Editor\Data\Managed\UnityEngine\UnityEngine.CoreModule.xml

using UnityEngine.Experimental.Rendering;
using UnityEngine.Rendering;

#nullable disable
namespace UnityEngine.Device
{
  /// <summary>
  ///   <para>Access platform-specific system and hardware information.</para>
  /// </summary>
  public static class SystemInfo
  {
    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.unsupportedIdentifier.</para>
    /// </summary>
    public const string unsupportedIdentifier = "n/a";

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.batteryLevel and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static float batteryLevel => ShimManager.systemInfoShim.batteryLevel;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.batteryStatus and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static BatteryStatus batteryStatus => ShimManager.systemInfoShim.batteryStatus;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.operatingSystem and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static string operatingSystem => ShimManager.systemInfoShim.operatingSystem;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.operatingSystemFamily and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static OperatingSystemFamily operatingSystemFamily
    {
      get => ShimManager.systemInfoShim.operatingSystemFamily;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.processorType and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static string processorType => ShimManager.systemInfoShim.processorType;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.processorFrequency and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static int processorFrequency => ShimManager.systemInfoShim.processorFrequency;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.processorCount and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static int processorCount => ShimManager.systemInfoShim.processorCount;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.systemMemorySize and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static int systemMemorySize => ShimManager.systemInfoShim.systemMemorySize;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.deviceUniqueIdentifier and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static string deviceUniqueIdentifier
    {
      get => ShimManager.systemInfoShim.deviceUniqueIdentifier;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.deviceName and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static string deviceName => ShimManager.systemInfoShim.deviceName;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.deviceModel and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static string deviceModel => ShimManager.systemInfoShim.deviceModel;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsAccelerometer and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsAccelerometer => ShimManager.systemInfoShim.supportsAccelerometer;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsGyroscope and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsGyroscope => ShimManager.systemInfoShim.supportsGyroscope;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsLocationService and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsLocationService
    {
      get => ShimManager.systemInfoShim.supportsLocationService;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsVibration and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsVibration => ShimManager.systemInfoShim.supportsVibration;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsAudio and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsAudio => ShimManager.systemInfoShim.supportsAudio;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.deviceType and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static DeviceType deviceType => ShimManager.systemInfoShim.deviceType;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.graphicsMemorySize and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static int graphicsMemorySize => ShimManager.systemInfoShim.graphicsMemorySize;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.graphicsDeviceName and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static string graphicsDeviceName => ShimManager.systemInfoShim.graphicsDeviceName;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.graphicsDeviceVendor and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static string graphicsDeviceVendor => ShimManager.systemInfoShim.graphicsDeviceVendor;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.graphicsDeviceID and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static int graphicsDeviceID => ShimManager.systemInfoShim.graphicsDeviceID;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.graphicsDeviceVendorID and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static int graphicsDeviceVendorID => ShimManager.systemInfoShim.graphicsDeviceVendorID;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.graphicsDeviceType and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static GraphicsDeviceType graphicsDeviceType
    {
      get => ShimManager.systemInfoShim.graphicsDeviceType;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.graphicsUVStartsAtTop and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool graphicsUVStartsAtTop => ShimManager.systemInfoShim.graphicsUVStartsAtTop;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.graphicsDeviceVersion and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static string graphicsDeviceVersion => ShimManager.systemInfoShim.graphicsDeviceVersion;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.graphicsShaderLevel and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static int graphicsShaderLevel => ShimManager.systemInfoShim.graphicsShaderLevel;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.graphicsMultiThreaded and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool graphicsMultiThreaded => ShimManager.systemInfoShim.graphicsMultiThreaded;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.renderingThreadingMode and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static RenderingThreadingMode renderingThreadingMode
    {
      get => ShimManager.systemInfoShim.renderingThreadingMode;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.hasHiddenSurfaceRemovalOnGPU and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool hasHiddenSurfaceRemovalOnGPU
    {
      get => ShimManager.systemInfoShim.hasHiddenSurfaceRemovalOnGPU;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.hasDynamicUniformArrayIndexingInFragmentShaders and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool hasDynamicUniformArrayIndexingInFragmentShaders
    {
      get => ShimManager.systemInfoShim.hasDynamicUniformArrayIndexingInFragmentShaders;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsShadows and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsShadows => ShimManager.systemInfoShim.supportsShadows;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsRawShadowDepthSampling and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsRawShadowDepthSampling
    {
      get => ShimManager.systemInfoShim.supportsRawShadowDepthSampling;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsMotionVectors and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsMotionVectors => ShimManager.systemInfoShim.supportsMotionVectors;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supports3DTextures and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supports3DTextures => ShimManager.systemInfoShim.supports3DTextures;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsCompressed3DTextures and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsCompressed3DTextures
    {
      get => ShimManager.systemInfoShim.supportsCompressed3DTextures;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supports2DArrayTextures and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supports2DArrayTextures
    {
      get => ShimManager.systemInfoShim.supports2DArrayTextures;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supports3DRenderTextures and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supports3DRenderTextures
    {
      get => ShimManager.systemInfoShim.supports3DRenderTextures;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsCubemapArrayTextures and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsCubemapArrayTextures
    {
      get => ShimManager.systemInfoShim.supportsCubemapArrayTextures;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsAnisotropicFilter and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsAnisotropicFilter
    {
      get => ShimManager.systemInfoShim.supportsAnisotropicFilter;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.copyTextureSupport and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static CopyTextureSupport copyTextureSupport
    {
      get => ShimManager.systemInfoShim.copyTextureSupport;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsComputeShaders and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsComputeShaders => ShimManager.systemInfoShim.supportsComputeShaders;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsGeometryShaders and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsGeometryShaders
    {
      get => ShimManager.systemInfoShim.supportsGeometryShaders;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsTessellationShaders and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsTessellationShaders
    {
      get => ShimManager.systemInfoShim.supportsTessellationShaders;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsRenderTargetArrayIndexFromVertexShader and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsRenderTargetArrayIndexFromVertexShader
    {
      get => ShimManager.systemInfoShim.supportsRenderTargetArrayIndexFromVertexShader;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsInstancing and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsInstancing => ShimManager.systemInfoShim.supportsInstancing;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsHardwareQuadTopology and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsHardwareQuadTopology
    {
      get => ShimManager.systemInfoShim.supportsHardwareQuadTopology;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supports32bitsIndexBuffer and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supports32bitsIndexBuffer
    {
      get => ShimManager.systemInfoShim.supports32bitsIndexBuffer;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsSparseTextures and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsSparseTextures => ShimManager.systemInfoShim.supportsSparseTextures;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportedRenderTargetCount and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static int supportedRenderTargetCount
    {
      get => ShimManager.systemInfoShim.supportedRenderTargetCount;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsSeparatedRenderTargetsBlend and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsSeparatedRenderTargetsBlend
    {
      get => ShimManager.systemInfoShim.supportsSeparatedRenderTargetsBlend;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportedRandomWriteTargetCount and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static int supportedRandomWriteTargetCount
    {
      get => ShimManager.systemInfoShim.supportedRandomWriteTargetCount;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsMultisampledTextures and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static int supportsMultisampledTextures
    {
      get => ShimManager.systemInfoShim.supportsMultisampledTextures;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsMultisampled2DArrayTextures and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsMultisampled2DArrayTextures
    {
      get => ShimManager.systemInfoShim.supportsMultisampled2DArrayTextures;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsMultisampleAutoResolve and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsMultisampleAutoResolve
    {
      get => ShimManager.systemInfoShim.supportsMultisampleAutoResolve;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsTextureWrapMirrorOnce and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static int supportsTextureWrapMirrorOnce
    {
      get => ShimManager.systemInfoShim.supportsTextureWrapMirrorOnce;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.usesReversedZBuffer and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool usesReversedZBuffer => ShimManager.systemInfoShim.usesReversedZBuffer;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.SupportsRenderTextureFormat and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    /// <param name="format"></param>
    public static bool SupportsRenderTextureFormat(RenderTextureFormat format)
    {
      return ShimManager.systemInfoShim.SupportsRenderTextureFormat(format);
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.SupportsBlendingOnRenderTextureFormat and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    /// <param name="format"></param>
    public static bool SupportsBlendingOnRenderTextureFormat(RenderTextureFormat format)
    {
      return ShimManager.systemInfoShim.SupportsBlendingOnRenderTextureFormat(format);
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.SupportsTextureFormat and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    /// <param name="format"></param>
    public static bool SupportsTextureFormat(TextureFormat format)
    {
      return ShimManager.systemInfoShim.SupportsTextureFormat(format);
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.SupportsVertexAttributeFormat and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    /// <param name="format"></param>
    /// <param name="dimension"></param>
    public static bool SupportsVertexAttributeFormat(VertexAttributeFormat format, int dimension)
    {
      return ShimManager.systemInfoShim.SupportsVertexAttributeFormat(format, dimension);
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.npotSupport and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static NPOTSupport npotSupport => ShimManager.systemInfoShim.npotSupport;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.maxTextureSize and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static int maxTextureSize => ShimManager.systemInfoShim.maxTextureSize;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.maxTexture3DSize and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static int maxTexture3DSize => ShimManager.systemInfoShim.maxTexture3DSize;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.maxTextureArraySlices and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static int maxTextureArraySlices => ShimManager.systemInfoShim.maxTextureArraySlices;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.maxCubemapSize and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static int maxCubemapSize => ShimManager.systemInfoShim.maxCubemapSize;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.maxAnisotropyLevel and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static int maxAnisotropyLevel => ShimManager.systemInfoShim.maxAnisotropyLevel;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.maxComputeBufferInputsVertex and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static int maxComputeBufferInputsVertex
    {
      get => ShimManager.systemInfoShim.maxComputeBufferInputsVertex;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.maxComputeBufferInputsFragment and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static int maxComputeBufferInputsFragment
    {
      get => ShimManager.systemInfoShim.maxComputeBufferInputsFragment;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.maxComputeBufferInputsGeometry and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static int maxComputeBufferInputsGeometry
    {
      get => ShimManager.systemInfoShim.maxComputeBufferInputsGeometry;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.maxComputeBufferInputsDomain and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static int maxComputeBufferInputsDomain
    {
      get => ShimManager.systemInfoShim.maxComputeBufferInputsDomain;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.maxComputeBufferInputsHull and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static int maxComputeBufferInputsHull
    {
      get => ShimManager.systemInfoShim.maxComputeBufferInputsHull;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.maxComputeBufferInputsCompute and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static int maxComputeBufferInputsCompute
    {
      get => ShimManager.systemInfoShim.maxComputeBufferInputsCompute;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.maxComputeWorkGroupSize and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static int maxComputeWorkGroupSize => ShimManager.systemInfoShim.maxComputeWorkGroupSize;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.maxComputeWorkGroupSizeX and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static int maxComputeWorkGroupSizeX
    {
      get => ShimManager.systemInfoShim.maxComputeWorkGroupSizeX;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.maxComputeWorkGroupSizeY and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static int maxComputeWorkGroupSizeY
    {
      get => ShimManager.systemInfoShim.maxComputeWorkGroupSizeY;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.maxComputeWorkGroupSizeZ and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static int maxComputeWorkGroupSizeZ
    {
      get => ShimManager.systemInfoShim.maxComputeWorkGroupSizeZ;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.computeSubGroupSize and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static int computeSubGroupSize => ShimManager.systemInfoShim.computeSubGroupSize;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsAsyncCompute and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsAsyncCompute => ShimManager.systemInfoShim.supportsAsyncCompute;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsGpuRecorder and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsGpuRecorder => ShimManager.systemInfoShim.supportsGpuRecorder;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsGraphicsFence and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsGraphicsFence => ShimManager.systemInfoShim.supportsGraphicsFence;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsAsyncGPUReadback and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsAsyncGPUReadback
    {
      get => ShimManager.systemInfoShim.supportsAsyncGPUReadback;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsRayTracing and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsRayTracing => ShimManager.systemInfoShim.supportsRayTracing;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsSetConstantBuffer and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsSetConstantBuffer
    {
      get => ShimManager.systemInfoShim.supportsSetConstantBuffer;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.constantBufferOffsetAlignment and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static int constantBufferOffsetAlignment
    {
      get => ShimManager.systemInfoShim.constantBufferOffsetAlignment;
    }

    /// <summary>
    ///   <para>The maximum size of a graphics buffer (GraphicsBuffer, ComputeBuffer, vertex/index buffer, etc.) in bytes (Read Only).</para>
    /// </summary>
    public static long maxGraphicsBufferSize => ShimManager.systemInfoShim.maxGraphicsBufferSize;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.hasMipMaxLevel and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool hasMipMaxLevel => ShimManager.systemInfoShim.hasMipMaxLevel;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsMipStreaming and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsMipStreaming => ShimManager.systemInfoShim.supportsMipStreaming;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.usesLoadStoreActions and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool usesLoadStoreActions => ShimManager.systemInfoShim.usesLoadStoreActions;

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.hdrDisplaySupportFlags and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static HDRDisplaySupportFlags hdrDisplaySupportFlags
    {
      get => ShimManager.systemInfoShim.hdrDisplaySupportFlags;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsConservativeRaster and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsConservativeRaster
    {
      get => ShimManager.systemInfoShim.supportsConservativeRaster;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.supportsMultiview and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsMultiview => ShimManager.systemInfoShim.supportsMultiview;

    /// <summary>
    ///   <para>This property has the same functionality as SystemInfo.supportsStoreAndResolveAction and also shows platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsStoreAndResolveAction
    {
      get => ShimManager.systemInfoShim.supportsStoreAndResolveAction;
    }

    /// <summary>
    ///   <para>This property has the same functionality as SystemInfo.supportsMultisampleResolveDepth and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    public static bool supportsMultisampleResolveDepth
    {
      get => ShimManager.systemInfoShim.supportsMultisampleResolveDepth;
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.IsFormatSupported and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    /// <param name="format"></param>
    /// <param name="usage"></param>
    public static bool IsFormatSupported(GraphicsFormat format, FormatUsage usage)
    {
      return ShimManager.systemInfoShim.IsFormatSupported(format, usage);
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.GetCompatibleFormat and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    /// <param name="format"></param>
    /// <param name="usage"></param>
    public static GraphicsFormat GetCompatibleFormat(GraphicsFormat format, FormatUsage usage)
    {
      return ShimManager.systemInfoShim.GetCompatibleFormat(format, usage);
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.GetGraphicsFormat and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    /// <param name="format"></param>
    public static GraphicsFormat GetGraphicsFormat(DefaultFormat format)
    {
      return ShimManager.systemInfoShim.GetGraphicsFormat(format);
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.GetRenderTextureSupportedMSAASampleCount and also mimics platform-specific behavior in the Unity Editor.</para>
    /// </summary>
    /// <param name="desc"></param>
    public static int GetRenderTextureSupportedMSAASampleCount(RenderTextureDescriptor desc)
    {
      return ShimManager.systemInfoShim.GetRenderTextureSupportedMSAASampleCount(desc);
    }

    /// <summary>
    ///   <para>This has the same functionality as SystemInfo.SupportsRandomWriteOnRenderTextureFormat. At the moment, the Device Simulator doesn't support simulation of this method.</para>
    /// </summary>
    /// <param name="format"></param>
    public static bool SupportsRandomWriteOnRenderTextureFormat(RenderTextureFormat format)
    {
      return ShimManager.systemInfoShim.SupportsRandomWriteOnRenderTextureFormat(format);
    }
  }
}
